在昇腾 NPU 上运行 RLVR 流水线
最后更新:2026/08/17。
本文档提供在华为昇腾 NPU 上运行 RLVR(Reinforcement Learning with Verifiable Rewards)流水线的端到端指南,涵盖环境准备、数据准备、模型下载、配置编写、训练启动、监控与评估,以及从 checkpoint 恢复训练。
工作流概览
从零开始在 NPU 上运行 RLVR 任务包含以下步骤:
1. 环境准备 → 2. 数据准备 → 3. 模型准备 → 4. 编写配置 → 5. 启动训练 → 6. 监控与评估 → 7. 从 Checkpoint 恢复
步骤 1:环境准备
1.1 硬件与驱动前置条件
请确保硬件和宿主机驱动已经准备就绪:
| 项目 | 要求 |
|---|---|
| 硬件 | Atlas 900 A2 PODc(Ascend 910B1)或 Atlas 900 A3 PODc(Ascend 910_9391) |
| 宿主机 OS | Ubuntu 22.04 |
| Python | 3.12 |
| CANN | 9.1.0 |
| PyTorch | 2.10.0 |
| torch-npu | 2.10.0.post4 |
| vLLM | 0.23.0 |
| vLLM-Ascend | 0.23.0rc1 |
| triton-ascend | 3.2.1 |
| Ascend NPU 驱动 | 已在宿主机安装(npu-smi info 能看到设备) |
| Docker | >= 20.10 |
1.2 获取 Docker 镜像
请使用与硬件匹配的预构建昇腾镜像。官方 ROLL NPU 镜像标签可在 https://quay.io/repository/ascend/roll?tab=tags 查看。容器启动细节参见 Ascend NPU Docker 使用指南。
# A2 硬件
docker pull quay.io/ascend/roll:main-a2
docker tag quay.io/ascend/roll:main-a2 roll:v0.3-cann9.1.0-torch_npu2.10.0.post4-910b-ubuntu22.04-py3.12
# A3 硬件
docker pull quay.io/ascend/roll:main-a3
docker tag quay.io/ascend/roll:main-a3 roll:v0.3-cann9.1.0-torch_npu2.10.0.post4-a3-ubuntu22.04-py3.12
当前仓库提供 docker/Dockerfile.A2 和 docker/Dockerfile.A3,用于构建自定义镜像。如果你维护自定义镜像,请确保依赖版本与预构建镜像保持一致。
1.3 启动容器
docker run -dit \
--name roll_npu \
--ulimit nofile=65536:65536 \
--device /dev/davinci0 \
--device /dev/davinci1 \
--device /dev/davinci2 \
--device /dev/davinci3 \
--device /dev/davinci4 \
--device /dev/davinci5 \
--device /dev/davinci6 \
--device /dev/davinci7 \
--device /dev/davinci_manager \
--device /dev/devmm_svm \
--device /dev/hisi_hdc \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/add-ons:/usr/local/Ascend/add-ons \
-v /usr/local/dcmi:/usr/local/dcmi \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /path/to/models:/data/models \
-v /path/to/data:/data \
--ipc=host \
--net=host \
roll:v0.3-cann9.1.0-torch_npu2.10.0.post4-a3-ubuntu22.04-py3.12 \
/bin/bash
注意:
-v /path/to/models:/data/models和-v /path/to/data:/data分别挂载模型权重目录和训练数据目录。请根据实际环境调整路径。
1.4 验证环境
进入容器后,执行:
# 验证 NPU 可见性
npu-smi info
# 验证 CANN 环境是否已加载
env | grep -E "ASCEND|LD_LIBRARY_PATH|PATH"
# 验证 Python 包
python -c "import torch; import torch_npu; print(torch.npu.is_available())"
python -c "import vllm; print(f'vllm: {vllm.__version__}')"
python -c "import vllm_ascend; print(f'vllm_ascend available')"
如果以上验证均通过,说明环境已经准备就绪。环境变量的详细说明参见 NPU 环境配置指南。
步骤 2:数据准备
RLVR 流水线使用 JSONL 格式的数据文件。不同奖励领域需要不同的数据字段。